"""
创建进程池
进程池中的进程数最好等于计算机中CPU核心数或者两倍
"""
import multiprocessing  #进程模块
import time
from time import sleep

def send_request(url):
    sleep(3)
    print(url)

if __name__ == '__main__':
    # 先请求目录
    urls = [
        'https://www.xunter.com/1',
        'https://www.xunter.com/2',
        'https://www.xunter.com/3',
        'https://www.xunter.com/4',
        'https://www.xunter.com/5',
        'https://www.xunter.com/6',
        'https://www.xunter.com/7',
        'https://www.xunter.com/8',
        'https://www.xunter.com/9',
        'https://www.xunter.com/10',
        'https://www.xunter.com/11',
        'https://www.xunter.com/12',
        'https://www.xunter.com/13',
        'https://www.xunter.com/14',
        'https://www.xunter.com/15',
        'https://www.xunter.com/16',
        'https://www.xunter.com/17',
        'https://www.xunter.com/18',
    ]

    proce = []  # 子进程列表

    start = time.time()  # 开始运行的时间戳
    print('开始:', start)

    cpu_count = multiprocessing.cpu_count()    #获取计算机中的CPU核心数  16
    print(cpu_count)

    pool = multiprocessing.Pool(processes=cpu_count)    #创建CPU核心数个进程

    # 再下载目录中的每一章
    for url in urls:
        # 每一章的下载让进程池分配一个空闲的子进程，让子进程去下载
        pool.apply_async(func=send_request, args=(url,))

    pool.close()
    pool.join()

    end = time.time()
    print('结束：', end, '耗时：', end - start)